module.exports = function (grunt) {

    grunt.initConfig({
        watch: {
            pug: {
                files: ['views/**'],
                // asks: ['livereload'],
                options: {
                    // nospawn: true,
                    // interrupt: false,
                    // debounceDelay: 250,
                    livereload: true
                }
            },
            js: {
                files: ['public/js/**', 'models/**/*.js', 'schemas/**/*.js'],
                // tasks: ['jshint'],
                // tasks: ['livereload'],
                options: {
                    // nospawn: true,
                    // interrupt: false,
                    // debounceDelay: 250,
                    livereload: true
                }
            }
        },
        // reload: {
        //     port: 35279,
        //     liveReload: {},
        //     proxy: {
        //         host: 'localhost',
        //         port: '3000'
        //     }
        // },
        nodemon: {
            dev: {
                options: {
                    file: 'app.js',
                    args: [],
                    ignoredFiles: ['README.md', 'node_modules/**', '.DS_Store'],
                    watchedExtensions: ['js'],
                    // watchFolders: ['app', 'config'],
                    watchFolders: ['./'],
                    debug: true,
                    delayTime: 1,
                    env: {
                        PORT: 3000
                    },
                    cwd: __dirname
                }
            }
        },
        concurrent: {
            tasks: ['nodemon', 'watch'],
            options: {
                logConcurrentOutput: true
            }
        }
    })

    grunt.loadNpmTasks('grunt-contrib-watch') // 监测文件修改  会重新执行注册好的任务
    grunt.loadNpmTasks('grunt-nodemon') // 实时监听入口文件  app.js   自动重启
    grunt.loadNpmTasks('grunt-concurrent') // 慢任务  less sass 

    grunt.option('force', true)  // 不要让在开发过程中 因为语法的错误 中断了 grunt 的任务

    // 注册一个默认任务
    grunt.registerTask('default', ['concurrent'])
}